package com.nkzy.controller;

import com.nkzy.pojo.Result;
import com.nkzy.pojo.User;
import com.nkzy.service.UserService;
import jakarta.validation.constraints.Pattern;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller表示是一个Controller 但返回是是一个字符串
@RestController //UserController类加上注解，这个类就是Controller 返回值是一个JSON对象
@RequestMapping("/user")  //这个注解可以加到方法上，也可 以加到类上，加到类上表示作用到用户模块上
@Validated
public class UserController {
    //Controller层要使用service层对象，所以需要注入
    @Autowired //依赖注入的注解
    private UserService userService;

    //在类中要写一个方法，完成用户注解，这个方法就是用户注册的接口方法
    @PostMapping("/register")  //访问注册方法的路径
    public Result register(@Pattern(regexp = "^\\S{5,16}$") String username,
                           @Pattern(regexp = "^\\S{5,16}$") String password) {
        //完成注册。1.通过传来的username到业务层调用相应的方法查找用户
//        User u = userService.findUserByName(username);
        //2.根据查找到的信息进行判断是否可以注册
        User u = userService.findUserByName(username);

        if (u == null) {
            //用户名没有被占用，可注册，调用业务层注册的方法
            userService.register(username, password);
            //成功注册返回Json数据
            return Result.success();
        }else {
            return Result.error("用户名已被占用,请重新注册！");
        }

    }

}
